package com.webserver.core;

import com.webserver.http.HttpServletRequest;

import java.io.IOException;
import java.net.Socket;

/**
 * 该线程任务负责处理与某个客户端的一次 HTTP 交互
 * 由于 HTTP 协议要求客户端和服务端采取一问一答的原则,因此这里处理与客户端的一次交互规划为三个步骤:
 * 1,解析请求(将客户端发送过来的请求内容读取)
 * 2,处理请求(根据请求内容进行对应的处理)
 * 3,发送响应(将处理结果回馈给浏览器)
 * 断开连接
 */
public class ClientHandler implements Runnable{
    private Socket socket;

    public ClientHandler(Socket socket) {
        this.socket = socket;
    }

    @Override
    public void run() {
        try{
            // 1 : 解析请求(将客户端发送过来的请求内容读取到)
            HttpServletRequest request = new HttpServletRequest(socket);
            // 2 : 处理请求(根据请求内容进行对应的处理)
            // 3 : 发送响应(将处理结果回馈给浏览器)
        } catch (IOException e ) {
            e.printStackTrace();
        } finally {
            // 按照 HTTP 协议要求,处理最后要断开连接
            try {
                socket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }


}
